/**
 * 使用选择排序法对整型数组进行排序
 */
package com.hww.sort.impl;

import com.hww.sort.ISortNumber;

/**
 * @author:Huangwenwei
 * @date:2014-6-18
 * @time:下午4:20:06
 */
public class SelectionSort implements ISortNumber {

	public SelectionSort() {
	}

	@Override
	public int[] sortASC(int[] intArray) {
		if (intArray == null)
			return null;
		/*
		 * 在Java中，参数传递是采用引用传值的方式，在排序过程中需要改变数组，所以为了保证输入的参数值不变 这里采用了数组的clone方法
		 */
		int[] srcDatas = (int[]) intArray.clone();
		int size = srcDatas.length;
		// 從頭遍歷數組元素
		for (int i = 0; i < size; i++) {
			// 遍歷下標爲i之後的元素
			for (int j = i; j < size; j++) {
				// 如果數組前面的值比後面的值大，則交換位置
				if (srcDatas[i] > srcDatas[j])
					swap(srcDatas, i, j);
			}
		}
		
		return srcDatas;
	}

	/**
	 * 交換數組下標爲i和j的值
	 * 
	 * @time:下午4:41:13
	 * @data:2014-6-18
	 * @auto:mr.huangwenwei@gmail.com
	 * @return:void
	 */
	private void swap(int[] srcDatas, int i, int j) {
		int temp = srcDatas[i];
		srcDatas[i] = srcDatas[j];
		srcDatas[j] = temp;
	}
}
